#pragma once
#include <functional>

class ByteBuffer;
typedef std::shared_ptr<ByteBuffer> ByteBufferPtr;
namespace as
{
	namespace net
	{
		class Session;
		class TcpServer;
		class TcpClient;
		typedef std::shared_ptr<Session> TcpConnPtr;
		typedef std::shared_ptr<TcpServer> TcpServerPtr;
		typedef std::shared_ptr<TcpClient> TcpClientPtr;
		typedef std::function<void(const TcpConnPtr &)> TcpCallBack;
		typedef std::function<void(const TcpConnPtr &, ByteBuffer&)> MsgCallBack;
		typedef std::function<ByteBuffer *()> PackAllocCallBack;
		typedef std::function<void(ByteBuffer *)> ReleaseAllocCallBack;

	}
}
